﻿using System.ComponentModel.DataAnnotations;
using System.Data.SqlTypes;

namespace Sekretar.DataLayer
{
    partial class SekretarDataContext
    {
        public SekretarDataContext() :
            base(Common.Properties.Settings.Default.ConnectionString, mappingSource)
        {
            OnCreated();
        }
    }

    #region Mesto
    partial class Mesto
    {
        partial void OnValidate(System.Data.Linq.ChangeAction action)
        {
            if (string.IsNullOrEmpty(this.Naziv)) 
                throw new ValidationException("Naziv je obavezno polje!");
            else if (this.Naziv.Length > 50) 
                throw new ValidationException("Maksimalna dužina naziva je 50 karaktera!");

            if (string.IsNullOrEmpty(this.Sifra)) 
                throw new ValidationException("Šifra je obavezno polje!");
            else if (this.Sifra.Length > 6) 
                throw new ValidationException("Maksimalna dužina šifre je 6 karaktera!");

            if (string.IsNullOrEmpty(this.Ptt)) 
                throw new ValidationException("Ptt je obavezno polje!");
            else if (this.Ptt.Length > 5) 
                throw new ValidationException("Maksimalna dužina za ptt je 5 karaktera!");

            if (action == System.Data.Linq.ChangeAction.Update)
            {
                this.KorisnikId = Common.Properties.Settings.Default.KorisnikId;
                this.DatumRada = Common.Tools.SqlFunkcije.VratiTrenutnoVreme();
            }
        }
    }
    #endregion

    #region Opština
    partial class Opstina
    {
        partial void OnValidate(System.Data.Linq.ChangeAction action)
        {
            if (string.IsNullOrEmpty(this.Naziv))
                throw new ValidationException("Naziv je obavezno polje!");
            else if (this.Naziv.Length > 50)
                throw new ValidationException("Maksimalna dužina naziva je 50 karaktera!");

            if (string.IsNullOrEmpty(this.Sifra))
                throw new ValidationException("Šifra je obavezno polje!");
            else if (this.Sifra.Length > 5)
                throw new ValidationException("Maksimalna dužina šifre je 5 karaktera!");

            if (action == System.Data.Linq.ChangeAction.Update)
            {
                this.KorisnikId = Common.Properties.Settings.Default.KorisnikId;
                this.DatumRada = Common.Tools.SqlFunkcije.VratiTrenutnoVreme();
            }
        }
    }
    #endregion

    #region Država
    partial class Drzava
    {
        partial void OnValidate(System.Data.Linq.ChangeAction action)
        {
            if (string.IsNullOrEmpty(this.Oznaka))
                throw new ValidationException("Oznaka je obavezno polje!");
            else if (this.Oznaka.Length > 3)
                throw new ValidationException("Maksimalna dužina oznake je 3 karaktera!");

            if (string.IsNullOrEmpty(this.Naziv))
                throw new ValidationException("Naziv je obavezno polje!");
            else if (this.Naziv.Length > 100)
                throw new ValidationException("Maksimalna dužina naziva je 100 karaktera!");

            if (action == System.Data.Linq.ChangeAction.Update)
            {
                this.KorisnikId = Common.Properties.Settings.Default.KorisnikId;
                this.DatumRada = Common.Tools.SqlFunkcije.VratiTrenutnoVreme();
            }
        }
    }
    #endregion

    #region Stručna sprema
    partial class StrucnaSprema
    {
        partial void OnValidate(System.Data.Linq.ChangeAction action)
        {
            if (this.StrucnaSpremaId == 0)
                throw new ValidationException("Šifra je obavezno polje!");

            if (string.IsNullOrEmpty(this.Naziv))
                throw new ValidationException("Naziv je obavezno polje!");
            else if (this.Naziv.Length > 30)
                throw new ValidationException("Maksimalna dužina naziva je 30 karaktera!");

            if (action == System.Data.Linq.ChangeAction.Update)
            {
                this.KorisnikId = Common.Properties.Settings.Default.KorisnikId;
                this.DatumRada = Common.Tools.SqlFunkcije.VratiTrenutnoVreme();
            }
        }
    }
    #endregion

    #region Zanimanje
    partial class Zanimanje
    {
        partial void OnValidate(System.Data.Linq.ChangeAction action)
        {
            if (string.IsNullOrEmpty(this.Naziv))
                throw new ValidationException("Naziv je obavezno polje!");
            else if (this.Naziv.Length > 250)
                throw new ValidationException("Maksimalna dužina naziva je 250 karaktera!");

            if (action == System.Data.Linq.ChangeAction.Update)
            {
                this.KorisnikId = Common.Properties.Settings.Default.KorisnikId;
                this.DatumRada = Common.Tools.SqlFunkcije.VratiTrenutnoVreme();
            }
        }
    }
    #endregion

    #region Radno mesto
    partial class RadnoMesto
    {
        partial void OnValidate(System.Data.Linq.ChangeAction action)
        {
            if (string.IsNullOrEmpty(this.Naziv))
                throw new ValidationException("Naziv je obavezno polje!");
            else if (this.Naziv.Length > 100)
                throw new ValidationException("Maksimalna dužina naziva je 100 karaktera!");

            if (string.IsNullOrEmpty(this.Opis))
                throw new ValidationException("Opis je obavezno polje!");
            else if (this.Naziv.Length > 2000)
                throw new ValidationException("Maksimalna dužina opisa je 2000 karaktera!");

            if (action == System.Data.Linq.ChangeAction.Update)
            {
                this.KorisnikId = Common.Properties.Settings.Default.KorisnikId;
                this.DatumRada = Common.Tools.SqlFunkcije.VratiTrenutnoVreme();
            }
        }
    }
    #endregion

    #region Nacionalnost
    partial class Nacionalnost
    {
        partial void OnValidate(System.Data.Linq.ChangeAction action)
        {
            if (string.IsNullOrEmpty(this.Naziv))
                throw new ValidationException("Naziv je obavezno polje!");
            else if (this.Naziv.Length > 30)
                throw new ValidationException("Maksimalna dužina naziva je 30 karaktera!");

            if (action == System.Data.Linq.ChangeAction.Update)
            {
                this.KorisnikId = Common.Properties.Settings.Default.KorisnikId;
                this.DatumRada = Common.Tools.SqlFunkcije.VratiTrenutnoVreme();
            }
        }
    }
    #endregion

    #region Razlog primanja
    partial class RazlogPrimanja
    {
        partial void OnValidate(System.Data.Linq.ChangeAction action)
        {
            if (string.IsNullOrEmpty(this.Opis))
                throw new ValidationException("Opis je obavezno polje!");
            else if (this.Opis.Length > 250)
                throw new ValidationException("Maksimalna dužina opisa je 250 karaktera!");

            if (action == System.Data.Linq.ChangeAction.Update)
            {
                this.KorisnikId = Common.Properties.Settings.Default.KorisnikId;
                this.DatumRada = Common.Tools.SqlFunkcije.VratiTrenutnoVreme();
            }
        }
    }
    #endregion

    #region Zaposleni
    partial class Zaposleni
    {
        partial void OnValidate(System.Data.Linq.ChangeAction action)
        {
            if (string.IsNullOrEmpty(this.JMBG)) 
                throw new ValidationException("Jmbg je obavezno polje!");
            else if (this.JMBG.Length != 13) 
                throw new ValidationException("Dužina Jmbg mora biti 13 karaktera!");

            if (string.IsNullOrEmpty(this.Ime))
                throw new ValidationException("Ime je obavezno polje!");
            else if (this.Ime.Length > 30)
                throw new ValidationException("Maksimalna dužina imena je 30 karaktera!");

            if (string.IsNullOrEmpty(this.Prezime))
                throw new ValidationException("Prezime je obavezno polje!");
            else if (this.Prezime.Length > 30)
                throw new ValidationException("Maksimalna dužina prezimena je 30 karaktera!");
            
            if (!string.IsNullOrEmpty(this.DevojackoPrezime))
            if (this.DevojackoPrezime.Length > 30)
                throw new ValidationException("Maksimalna dužina devojačkog prezimena je 30 karaktera!");

            if (string.IsNullOrEmpty(this.Pol.ToString()))
                throw new ValidationException("Pol je obavezno polje!");

            if (string.IsNullOrEmpty(this.Ulica))
                throw new ValidationException("Ulica je obavezno polje!");
            else if (this.Ulica.Length > 50)
                throw new ValidationException("Maksimalna dužina za ulicu je 50 karaktera!");

            if (string.IsNullOrEmpty(this.Broj))
                throw new ValidationException("Broj je obavezno polje!");
            else if (this.Broj.Length > 10)
                throw new ValidationException("Maksimalna dužina za broj je 10 karaktera!");

            if (!string.IsNullOrEmpty(this.LicnaKarta))
            if (this.LicnaKarta.Length > 20)
                throw new ValidationException("Maksimalna dužina za ličnu kartu je 20 karaktera!");

            if (!string.IsNullOrEmpty(this.RadnaKnjizica))
            if (this.RadnaKnjizica.Length > 50)
                throw new ValidationException("Maksimalna dužina za radnu knjižicu je 50 karaktera!");

            if (action == System.Data.Linq.ChangeAction.Update)
            {
                this.KorisnikId = Common.Properties.Settings.Default.KorisnikId;
                this.DatumRada = Common.Tools.SqlFunkcije.VratiTrenutnoVreme();
            }
        }
    }
    #endregion

    #region Ugovor
    partial class Ugovor
    {
        partial void OnValidate(System.Data.Linq.ChangeAction action)
        {
            if (this.Lokacija != null)
            if (this.Lokacija.Length > 500)
                throw new ValidationException("Maksimalna dužina za lokaciju je 500 karaktera!");

            if (this.DatumOd == null)
                throw new ValidationException("Datum od je obavezno polje!");

            if (this.Procenat == 0)
                throw new ValidationException("Procenat je obavezno polje!");
            else if (this.Procenat > 200)
                throw new ValidationException("Maksimalna vrednost za procenat može biti 200!");

            if (this.BrojSati == 0)
                throw new ValidationException("Broj sati je obavezno polje!");
            else if (this.BrojSati > 200)
                throw new ValidationException("Maksimalna vrednost za broj sati može biti 200!");

            if (this.BrojNastavnihSati == 0)
                throw new ValidationException("Broj nastavnih sati je obavezno polje!");
            else if (this.BrojNastavnihSati > 200)
                throw new ValidationException("Maksimalna vrednost za broj nastavnih sati može biti 200!");

            if (action == System.Data.Linq.ChangeAction.Update)
            {
                this.KorisnikId = Common.Properties.Settings.Default.KorisnikId;
                this.DatumRada = Common.Tools.SqlFunkcije.VratiTrenutnoVreme();
            }
        }
    }
    #endregion

    #region Radna nedelja
    partial class RadnaNedelja
    {
        partial void OnValidate(System.Data.Linq.ChangeAction action)
        {
            if (this.Datum == null)
                throw new ValidationException("Datum od je obavezno polje!");

            if (string.IsNullOrEmpty(this.Godina))
                throw new ValidationException("Godina je obavezno polje!");
            else if (this.Godina.Length > 4)
                throw new ValidationException("Maksimalna dužina za godinu je 4 karaktera!");

            if (string.IsNullOrEmpty(this.Zaduzenja))
                throw new ValidationException("Zaduženja je obavezno polje!");
            else if (this.Godina != null)
                if (this.Godina.Length > 50)
                throw new ValidationException("Maksimalna dužina za zaduženja je 50 karaktera!");

            if (action == System.Data.Linq.ChangeAction.Update)
            {
                this.KorisnikId = Common.Properties.Settings.Default.KorisnikId;
                this.DatumRada = Common.Tools.SqlFunkcije.VratiTrenutnoVreme();
            }
        }
    }
    #endregion

    #region Obrazovanje
    partial class Obrazovanje
    {
        partial void OnValidate(System.Data.Linq.ChangeAction action)
        {
            if (this.Datum == null)
                throw new ValidationException("Datum od je obavezno polje!");

            if (this.ZanimanjeId == 0)
                throw new ValidationException("Zanimanje je obavezno polje!");

            if (this.StrucnaSpremaId == 0)
                throw new ValidationException("Stručna sprema je obavezno polje!");

            if (action == System.Data.Linq.ChangeAction.Update)
            {
                this.KorisnikId = Common.Properties.Settings.Default.KorisnikId;
                this.DatumRada = Common.Tools.SqlFunkcije.VratiTrenutnoVreme();
            }
        }
    }
    #endregion
}